package rescsa.gob.pe.actividad.action;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

import rescsa.gob.pe.actividad.bean.ActividadBEAN;
import rescsa.gob.pe.actividad.service.ActividadService;
import rescsa.gob.pe.actividad.service.ActividadServiceImplementacion;
import rescsa.gob.pe.defecto.bean.DefectoBEAN;
import rescsa.gob.pe.defecto.service.DefectoService;
import rescsa.gob.pe.defecto.service.DefectoServiceImplementacion;
import rescsa.gob.pe.requerimiento.bean.RequerimientoBEAN;
import rescsa.gob.pe.requerimiento.service.RequerimientoServiceImplementacion;
import rescsa.gob.pe.trabajo.bean.DetalleRequerimientoActividadBEAN;

import com.opensymphony.xwork2.ActionSupport;

@ParentPackage(value="actividad")
public class Actividad extends ActionSupport implements   ServletRequestAware, SessionAware{
	Map session;
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ActividadServiceImplementacion actividadi=new ActividadServiceImplementacion();
	private HttpServletRequest servletRequest;
	private List<ActividadBEAN> actividades;
	private String oper;
	private String id;
	
	private ActividadService iservice;
	private List<ActividadBEAN> listaactividadesxid;
	
	private DefectoService defectosi;
	private List<DefectoBEAN> defectos;
	private ActividadBEAN defecto;
	
	private RequerimientoServiceImplementacion requerimientoi=new RequerimientoServiceImplementacion();
	private List<RequerimientoBEAN> requerimientos;
	private RequerimientoBEAN requerimiento;
	
	private DefectoBEAN defec;
	
	private DetalleRequerimientoActividadBEAN detallerequerimientoactividad;
	
	
//	****
	private int carpeta;
	private DetalleRequerimientoActividadBEAN ruta=null;
	private List<File> documento;
	private List<String> documentoContentType;
	private List<String> documentoFileName;
	private File destFile;
//	 ****
	
	
	
	public Actividad(){
		iservice=new ActividadServiceImplementacion();
		listaactividadesxid=new ArrayList<ActividadBEAN>();
		defectos=new ArrayList<DefectoBEAN>(); 
		defecto=new ActividadBEAN();
		defectosi=new DefectoServiceImplementacion();
		requerimiento=new RequerimientoBEAN();
		defec=new DefectoBEAN();
		detallerequerimientoactividad=new DetalleRequerimientoActividadBEAN();
	}
	
	//Finalizar Detalle Actividad
//	*******************************************************************
	public String uploadactividad(){
		try {
//para que tengas tu carpeta tienes que ponerle asi mira
            System.out.println("llego la actividad");
			String ruta="";
			//aca lo pones
//			ruta=isolicitudRequerimientoSevice.ObtenerUsuarioconCodigoRuta();
//			System.out.println("ruta "+ruta.getCodigo_solicitud_requerimiento());
			
			
//			carpeta=Integer.parseInt(ruta.getCodigo_solicitud_requerimiento())+1;
			
			
			
			
//			le he agregado ; para separar todo el nombre de la ruta completa esta ruta contiene de los tres elementos
            for(int i=0;i<documento.size();i++){
            	    destFile = new File("C://solicitudes//Actividades//A"+"carpeta"+"//F"+documentoFileName.get(i));
            	   FileUtils.copyFile(documento.get(i), destFile);
            	 
            	  }
            System.out.println(""+destFile.toString());
            
        // borro el primer ; por vacio ""
            ruta =ruta.replaceFirst(";","");
            System.out.println("la ruta sin nombre de archivo "+ruta);
            detallerequerimientoactividad.setArchivo(ruta);

           
            iservice.SubirArchivosaActividad(detallerequerimientoactividad);
		} catch (IOException e) {
			
			addActionError(e.getMessage());
			System.out.println(e.getMessage());
			e.printStackTrace();
			
		}catch(Exception e1 ){
			addActionError(e1.getMessage());
			System.out.println(e1.getMessage());
			e1.printStackTrace();
			
		}
		return SUCCESS;
	}
//	*******************************************************************
	
	//Detalle Actividad
//	*******************************************************************
	public String verActividad(){
		System.out.println("llego la actividad");
		System.out.println("Actividad numero "+detallerequerimientoactividad.getActividadBEAN().getCodigo_actividad());
		try {
			iservice.ModificarEstadoActividad(detallerequerimientoactividad);
			System.out.println("Modifico Estado de Actividad numero "+detallerequerimientoactividad.getActividadBEAN().getCodigo_actividad());
			detallerequerimientoactividad=iservice.ObtenerActividad(detallerequerimientoactividad.getActividadBEAN().getCodigo_actividad());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			return SUCCESS;
		}
//	*******************************************************************
	
	//Detalle Defecto
//	*******************************************************************
	public String verDefecto(){
		System.out.println("verDefecto");
		System.out.println("Defecto numero "+defec.getCodigo_defecto());
		try {
			defec=defectosi.ObtenerDefectos(defec.getCodigo_defecto());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return SUCCESS;
	}
//	*******************************************************************
	
	public String listadodeRequerimiento(){
		System.out.println("llega a listadodeRequerimiento");
		try {
			requerimientos=requerimientoi.ListaRequerimientos();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return SUCCESS;
	}
	
	public String ListaDefectosActividad(){
		System.out.println("llego la actividad con defecto  "+defecto.getCodigo_actividad());
		try {
			
			defectos=defectosi.ListaDefectosActividad(""+defecto.getCodigo_actividad());
			for (DefectoBEAN aux : defectos) {
				System.out.println("defectos "+aux.getCodigo_defecto());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return SUCCESS;
	}
	
	
	@Action(value="/ListaActividadesAction",results={@Result(name="success",type="json")})
	public String ListaActividades() throws Exception{
		System.out.println("ListaActividadesAction");		
		actividades=actividadi.ListaActividades();
		return SUCCESS;
	}
	
	@SuppressWarnings("unchecked")
	@Action(value="/ListaActividadesRequerimientoAction",results={@Result(name="success",type="json")})
	public String ListaActividadesRequerimiento() throws Exception{
		
		System.out.println("llega a ListaActividadesRequerimiento "+requerimiento.getCodigo_solicitud_requerimiento());
//		System.out.println("lista id "+id);
//		
//		System.out.println("lista llego al action "+getId());
//		session.put("nuevaid", id);
//		
//		String id1=(String)session.get("nuevaid");
	try {
	
		listaactividadesxid=iservice.ListaActividadesRequerimiento(""+requerimiento.getCodigo_solicitud_requerimiento());
		for (ActividadBEAN aux : listaactividadesxid) {
			
			System.out.println("codigos : "+aux.getCodigo_actividad());
		}
		
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
		
//		//llega la lista 
//		
//		actividades=actividadi.ListaActividadesRequerimiento(id);
//		System.out.println("size "+actividades.size());
		return SUCCESS;
	}
	
	@Action(value="/ListaActividadesRequerimientoAnalistaAction",results={@Result(name="success",type="json")})
	public String ListaActividadesRequerimientoAnalista() throws Exception{
		System.out.println("ListaActividadesRequerimientoAnalistaAction");
		System.out.println("id "+id);
		actividades=actividadi.ListaActividadesRequerimientoAnalista(id);
		System.out.println("size "+actividades.size());
		return SUCCESS;
	}
	
	public ActividadServiceImplementacion getActividadi() {
		return actividadi;
	}
	public void setActividadi(ActividadServiceImplementacion actividadi) {
		this.actividadi = actividadi;
	}
	public List<ActividadBEAN> getActividades() {
		return actividades;
	}
	public void setActividades(List<ActividadBEAN> actividades) {
		this.actividades = actividades;
	}

	public String getOper() {
		return oper;
	}

	public void setOper(String oper) {
		this.oper = oper;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public List<ActividadBEAN> getListaactividadesxid() {
		return listaactividadesxid;
	}

	public void setListaactividadesxid(List<ActividadBEAN> listaactividadesxid) {
		this.listaactividadesxid = listaactividadesxid;
	}

	 public Map getSession() {
	      return session;
	  }

	 

	
	public void setSession(HttpServletRequest servletRequest) {
		this.servletRequest = servletRequest;
		
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		// TODO Auto-generated method stub
		
	}
	public ActividadBEAN getDefecto() {
		return defecto;
	}
	public void setDefecto(ActividadBEAN defecto) {
		this.defecto = defecto;
	}
	public List<DefectoBEAN> getDefectos() {
		return defectos;
	}
	public void setDefectos(List<DefectoBEAN> defectos) {
		this.defectos = defectos;
	}
	public List<RequerimientoBEAN> getRequerimientos() {
		return requerimientos;
	}
	public void setRequerimientos(List<RequerimientoBEAN> requerimientos) {
		this.requerimientos = requerimientos;
	}
	public RequerimientoBEAN getRequerimiento() {
		return requerimiento;
	}
	public void setRequerimiento(RequerimientoBEAN requerimiento) {
		this.requerimiento = requerimiento;
	}
	public DefectoBEAN getDefec() {
		return defec;
	}
	public void setDefec(DefectoBEAN defec) {
		this.defec = defec;
	}

	public DetalleRequerimientoActividadBEAN getDetallerequerimientoactividad() {
		return detallerequerimientoactividad;
	}

	public void setDetallerequerimientoactividad(
			DetalleRequerimientoActividadBEAN detallerequerimientoactividad) {
		this.detallerequerimientoactividad = detallerequerimientoactividad;
	}
	public HttpServletRequest getServletRequest() {
		return servletRequest;
	}

	

	  public void setSession(Map session) {
	      this.session = session;
	  }

	public ActividadService getIservice() {
		return iservice;
	}

	public void setIservice(ActividadService iservice) {
		this.iservice = iservice;
	}

	public DefectoService getDefectosi() {
		return defectosi;
	}

	public void setDefectosi(DefectoService defectosi) {
		this.defectosi = defectosi;
	}

	public RequerimientoServiceImplementacion getRequerimientoi() {
		return requerimientoi;
	}

	public void setRequerimientoi(RequerimientoServiceImplementacion requerimientoi) {
		this.requerimientoi = requerimientoi;
	}

	public int getCarpeta() {
		return carpeta;
	}

	public void setCarpeta(int carpeta) {
		this.carpeta = carpeta;
	}

	public DetalleRequerimientoActividadBEAN getRuta() {
		return ruta;
	}

	public void setRuta(DetalleRequerimientoActividadBEAN ruta) {
		this.ruta = ruta;
	}

	public List<File> getDocumento() {
		return documento;
	}

	public void setDocumento(List<File> documento) {
		this.documento = documento;
	}

	public List<String> getDocumentoContentType() {
		return documentoContentType;
	}

	public void setDocumentoContentType(List<String> documentoContentType) {
		this.documentoContentType = documentoContentType;
	}

	public List<String> getDocumentoFileName() {
		return documentoFileName;
	}

	public void setDocumentoFileName(List<String> documentoFileName) {
		this.documentoFileName = documentoFileName;
	}

	public File getDestFile() {
		return destFile;
	}

	public void setDestFile(File destFile) {
		this.destFile = destFile;
	}


 
    
    
}
